#ifndef PROCESS_H
#define PROCESS_H

#include <QObject>
#include <windows.h>
#include <tlhelp32.h>
#include <QString>
#include <QDebug>

class Process : public QObject
{
    Q_OBJECT
public:
    /*
     *  Constructor of the process class
     *  @param unsigned int Id : Unique identifier of the process
     *  @param unsigned int threadsNumber : Number of threads
     *  @param unsigned int parentId : Unique identifier of the parent
     *  @param unsigned long int priority : Priority of the process
     *  @param QString exeName : name of the .exe
     */
    explicit Process(unsigned int Id = 0, unsigned int threadsNumber = 0, unsigned int parentId = 0,  unsigned long int priority = 0, QString exeName = QString(), QObject *parent = 0);



    /*
     *  Constructor of the process class
     *  @param PROCESSENTRY32 * process : Windows structure of a process
     */
    Process(PROCESSENTRY32 * process, QObject *parent = 0);


    /*
     *  Constructor of the process class
     *  @param Process * process : Process to copy
     */
    Process(Process * process);


    /*
     *  Function to get the unique identifier of the process
     *  @return unsigned int : Unique identifier
     */
    unsigned int getId();


    /*
     *  Function to get the number of threads
     *  @return unsigned int : Number of threads
     */
    unsigned int getThreadsNumber();

    /*
     *  Function to get the ID of the parent
     *  @return unsigned int : ID of the parent process
     */
    unsigned int getParentId();

    /*
     *  Function to get the priority of the process
     *  @return unsigned int : priority
     */
    unsigned long int getPriority();


    /*
     *  Function to get the name of the .exe
     *  @return unsigned int : Name of the .exe
     */
    QString getExeName();
private:
    unsigned int Id;
    unsigned int threadsNumber;
    unsigned int parentId;
    unsigned long int priority;
    QString exeName;

signals:

public slots:

};

#endif // PROCESS_H
